
pub fn convert_base(num_str: &str, to_base: u32) -> String {
    // 从输入的字符串中解析原始数字和原进制
    let (number, from_base) = parse_number_and_base(num_str);
    
    // Step 1: 将输入的字符串从原进制转换为 10 进制数
    let num_in_decimal = u32::from_str_radix(number, from_base)
        .expect("Invalid input number for the specified base");

    // Step 2: 将 10 进制数转换为目标进制
    if to_base == 10 {
        return num_in_decimal.to_string(); // 如果目标是 10 进制，直接返回
    }

    // 使用一个字符串存储转换后的结果
    let mut result = String::new();
    let mut num = num_in_decimal;

    // 进制转换：不断除以目标进制并记录余数
    while num > 0 {
        let remainder = num % to_base;
        // 将余数转换为对应字符（0-9 或 A-F）
        let digit = if remainder < 10 {
            (b'0' + remainder as u8) as char
        } else {
            (b'a' + (remainder - 10) as u8) as char
        };
        result.insert(0, digit); // 插入到结果的前面
        num /= to_base;
    }

    // 如果结果为空，说明输入数字为 0
    if result.is_empty() {
        result.push('0');
    }

    result
}

// 辅助函数，用于从输入字符串中解析数字部分和原进制
fn parse_number_and_base(num_str: &str) -> (&str, u32) {
    if let Some(open_paren) = num_str.find('(') {
        if let Some(close_paren) = num_str.find(')') {
            let number = &num_str[..open_paren];
            let from_base_str = &num_str[(open_paren + 1)..close_paren];
            let from_base = from_base_str.parse::<u32>()
                .expect("Invalid base in input string");
            return (number, from_base);
        }
    }
    panic!("Invalid input format");
}